from django.shortcuts import render,HttpResponse,reverse
from django.contrib.auth.hashers import make_password, check_password
from ..models import *
from django.http import JsonResponse
import os
from django.contrib.auth.decorators import permission_required

#订单列表
@permission_required('myadmin.show_Order',raise_exception=True)
def order_index(request):
    #data=Order.objects.all()
    #for i in data:
    #    print(i.username)
    #print(data)
    # 接收搜索框传来的数据  如果没有则默认为None
    keyword = request.GET.get('keyword', None)
    types = request.GET.get('types', None)

    # 默认查询所有数据
    # print(Users.objects.all())
    data = Order.objects.all()

    # 如果有搜索条件
    # 判断types是否是全部
    if types == 'all':
        from django.db.models import Q
        data = Users.objects.filter(Q(id__contains=keyword)  | Q(phone__contains=keyword))
    elif types:
        # 如果不是all 并且是不假值 则进入这个条件
        # 通过拼接字典的方式 把types+__contains  拼成 id__contains:keyword 这样的 字典格式
        search = {types + '__contains': keyword}
        # 把data()对象 的值进行过滤  条件是serach 字典中值
        data = data.filter(**search)

    # 导入django分页模块
    from django.core.paginator import Paginator

    # 实例化对象 并且获取获取总页数
    p = Paginator(data, 10)

    # 获取当前页码数 如果没有传递get  默认是1
    pageindex = request.GET.get('page', 1)

    # 把导入的模块pag  使用对象p.page() 传递当前页数 默认是1  得到的结果是<userlist 1 of 15>
    # 意思是当前页码是1页 总共15页
    user_list = p.page(pageindex)

    context = {'userlist': user_list}
    #print(context)
    return  render(request,'myadmin/order_index.html',context)

#订单状态修改
@permission_required('myadmin.edit_Order',raise_exception=True)
def order_status(request):
    #print(request.GET)
    ob = Order.objects.get(id=request.GET.get('id'))
    ob.status = request.GET.get('status')
    ob.save()
    return JsonResponse({'msg': '状态更新成功', 'code': 0})


@permission_required('myadmin.show_Order',raise_exception=True)
def order_info(request):
    #print(request.GET)
    id=request.GET.get('id')
    #print(id)
    ob=OrderInfo.objects.filter(orderid=Order.objects.get(id=id))
    return render(request, 'myadmin/order_info.html',{'order':ob})